package com.sxj.corejava.code01;

import java.util.Scanner;

/**
 * @author 石小俊
 * @date 2025年01月03日
 * 在控制台输入两个int类型的数字, 分别赋值给两个变量
 * 通过一定的方式, 将这两个变量的值进行交换
 * 使用两种方式进行实现
 * 1.交换过程中可以存在第三个变量
 * 2.交换过程中不能存在第三个变量
 */
public class Test08_练习 {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        System.out.print("请输入第一个数字:");
        int a = sc.nextInt();
        System.out.print("请输入第二个数字:");
        int b = sc.nextInt();
        System.out.println("交换前变量的值,a=" + a + ",b=" + b);

        System.out.println("***********************第一次交换***********************");
        // 交换过程中可以存在第三个变量
        // 将a的值交给临时变量
        int temp = a;
        // 将b的值交给a
        a = b;
        // 将临时变量中a的值交给b
        b = temp;
        System.out.println("第一次交换后变量的值,a=" + a + ",b=" + b);

        System.out.println("***********************第二次交换***********************");
        // 交换过程中不能存在第三个变量
        // 将两数之和赋值给其中一个变量
        a = a + b;
        // 将原始的a的值赋值给b
        // 此时的a的值为a+b,b的值为b,因此,原始的a=a+b-b
        // x=a+b,y=b x-y
        b = a - b;
        // 此时可以通过a+b-a得到原始的b
        a = a - b;
        System.out.println("第二次交换后变量的值,a=" + a + ",b=" + b);
    }
}
